package com.liyi.dao;

import java.util.List;

import com.zero.basic.dao.IBaseDao;
import com.zero.basic.exception.SmsDaoException;
import com.zero.mms.model.EmpSalary;

public interface EmpSalaryDao extends IBaseDao<EmpSalary>{
	
	/* 默认当前年下，获取某 [员工] 在某 [月] 的所有 [工资项] 的键值数据 */
	public List<EmpSalary> getESsByEmpIdAndDate(Integer empId, String date) throws SmsDaoException;
	
	/* 计算某 [员工] 在某 [月] 的所有 [计算工资项] 的值并写入数据库 */
	public void updateNumById(Integer empSalaryNum, Integer empSalaryId) throws SmsDaoException;
	
	/* 设置某 [员工] 的 在某 [月] 的 [工资项] 状态为 发放 */
	public void updateStateById(String state, Integer empSalaryId) throws SmsDaoException;
	
	/* 获取某 [员工] 在某 [月] 的 某[工资项] 的 [工资值] */
	public Integer getSalaryNum(Integer empId, String month, Integer salaryItemId) throws SmsDaoException;
	
	/* 获取某 [年度] 某 [月度] 公司的 总工资  */
	public Integer getTotalSalary(Integer year, Integer month) throws SmsDaoException;
	/* 获取某 [年度] 某 [月度] 公司的 平均工资  */
	public Integer getAvgSalary(Integer year, Integer month) throws SmsDaoException;
	/* 获取某 [年度] 某 [月度] 公司的 最低工资  */
	public Integer getMinSalary(Integer year, Integer month) throws SmsDaoException;
	/* 获取某 [年度] 某 [月度] 公司的 最高工资  */
	public Integer getMaxSalary(Integer year, Integer month) throws SmsDaoException;
	
	/* 获取某 [年度] 某 [月度] 某[部门](含子部门)的 总基本工资 */
	public Integer getDepTotalBaseSalary(Integer year, Integer month, String allDeps) throws SmsDaoException;
	/* 获取某 [年度] 某 [月度] 某[部门](含子部门)的 平均基本工资 */
	public Integer getDepAvgBaseSalary(Integer year, Integer month, String allDeps) throws SmsDaoException;
	/* 获取某 [年度] 某 [月度] 某[部门](含子部门)的 最低基本工资 */
	public Integer getDepMinBaseSalary(Integer year, Integer month, String allDeps) throws SmsDaoException;
	/* 获取某 [年度] 某 [月度] 某[部门](含子部门)的 最高基本工资 */
	public Integer getDepMaxBaseSalary(Integer year, Integer month, String allDeps) throws SmsDaoException;
	
	/* 获取某 [年度] 某[员工] 的 总基本工资 */
	public Integer getEmpTotalBaseSalary(Integer year, Integer empId) throws SmsDaoException;
	/* 获取某 [年度] 某[员工] 的 总养老保险 */
	public Integer getEmpTotalPension(Integer year, Integer empId) throws SmsDaoException;
	/* 获取某 [年度] 某[员工] 的 总医疗保险 */
	public Integer getEmpTotalMedical(Integer year, Integer empId) throws SmsDaoException;
	/* 获取某 [年度] 某[员工] 的 总公积金 */
	public Integer getEmpTotalHousingFund(Integer year, Integer empId) throws SmsDaoException;
	/* 获取某 [年度] 某[员工] 的 总病假扣款 */
	public Integer getEmpTotalSickleaveHold(Integer year, Integer empId) throws SmsDaoException;
	/* 获取某 [年度] 某[员工] 的 总加班工资 */
	public Integer getEmpTotalOverworkSalary(Integer year, Integer empId) throws SmsDaoException;
	
	/* 根据 [员工工资项]id 获取 [工资项]名称 */
	public String getSalaryItemNameByEmpSalaryId(Integer esId) throws SmsDaoException;
	/* 根据 [员工工资项]id 获取 [工资项]显示顺序 */
	public Integer getSalaryItemOrderByEmpSalaryId(Integer esId) throws SmsDaoException;
	
	/* 获取 [员工工资项] 的改动 [工资值] 并写入数据库 */
	public void save(Integer empSalaryId, Integer empSalaryNum) throws SmsDaoException;
}